package com.leecode.base;

/**
 * @Author: yaoshubin
 * @Date: 2022-12-09 22:22
 * @description :  选择排序
 *
 * 特点：开始位置一定是最小的，一旦确定再也不用管了
 */
public class Index_17_选择排序 {

    public static void main(String[] args) {

        int nums[] = {1, 6, 4, 2, 9, 5, 5, 6, 8};

        ArrayUtil.printArray(nums);
        ArrayUtil.printArray(selectSort(nums));
    }

    public static int[] selectSort(int[] nums) {
        int N = nums.length;
        if (nums == null || N == 1) {
            return nums;
        }

        //{1, 6, 4, 2, 9, 5, 5, 6, 8}
        //[0 1 2 3 ... i ... N-1]

        for (int i = 0; i < N; i++) {
            int minIndex = i;
            //利用这个for循环比较获取出 最小值得 index
            for (int j = i + 1; j < N; j++) {
                int jVal = nums[j];
                int minIndexValu = nums[minIndex];
                minIndex = jVal < minIndexValu ? j : minIndex;
            }

            //交换最小值和i得位置元素
            ArrayUtil.swap(nums, i, minIndex);
        }
        return nums;
    }







}
